const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
const path = require('path');
const pathSep = require('path').sep;
const fs = require('fs');
const getModuleId = require('./getModulelId').getModuleId;
/**
 * Metro configuration
 * https://reactnative.dev/docs/metro
 *
 * @type {import('metro-config').MetroConfig}
 */
const config = {
  // transformer: {
  //   minifierPath: require.resolve('metro-minify-terser'), // 使用默认的 terser 压缩器
  //   minifierConfig: {
  //     mangle: false, // 禁用变量名混淆
  //     keep_classnames: true, // 保留类名
  //     keep_fnames: true, // 保留函数名
  //   },
  // },
  serializer: {
    createModuleIdFactory: () => {
      const projectRootPath = path.resolve(__dirname);

      return (path) => {
        const name = getModuleId(projectRootPath, path);
        console.log('name', name);

        const coreModuleIds = require('./coreModuleId.json');
        if (!coreModuleIds.includes(name)) {
          coreModuleIds.push(name);
          fs.writeFileSync(
            projectRootPath + pathSep + 'coreModuleId.json',
            JSON.stringify(coreModuleIds)
          );
        }

        return name;
      };
    },
    // processModuleFilter: (module) => {
    //   //   const projectRootPath = __dirname;
    //   //   console.log("module", module);
    //   //   moduleArr=[moduleArr]
    //   //   if (module["path"].indexOf(path.sep + "node_module" + path.sep)) {
    //   //     return false;
    //   //   }
    //   return true;
    // },
  },
};

// console.log("__dirname", path, __dirname, config);
// console.log("moduleArr---", moduleArr);
module.exports = mergeConfig(getDefaultConfig(__dirname), config);
